﻿#ifndef CLIENTE_H
#define CLIENTE_H

#include "Arquivo.h"

#include <qDebug>
#include <QString>
#include <QList>
#include <QDataStream>

namespace model
{
	class Cliente
	{

		friend QDataStream& operator <<( QDataStream &ds, const Cliente *c )
		{
			ds << c->getNome();
			return ds;
		}

		friend QDataStream& operator >>( QDataStream &ds, Cliente *&c )
		{
			QString nome;

			ds >> nome;

			c = new Cliente( nome );

			return ds;
		}

		public:
			Cliente(){}
			Cliente( const QString &nome ): nome(nome), logado(false){}
			virtual ~Cliente(){}

			inline QString getNome() const { return nome; }
			inline bool isLogado() const { return logado; }

			inline void setNome( QString& nome ) { this->nome = nome; }
			inline void setLogado( bool logado ) { this->logado = logado; }

			Cliente operator=( const Cliente &c ) {
				this->nome = c.getNome();

				return *this;
			}

			void adicionarArquivo( Arquivo* );
			void removeArquivo( Arquivo* );
			void removeTodosArquivos();
			Arquivo* getArquivo( QString& nome );

		private:
			QString nome;
			QList<Arquivo*> arquivos;
			bool logado;
	};
}

#endif
